package com.lwd1513.designPattern.factory.responsibilitychain;

/**
 * @Author: 刘东（挂兰）
 * @Date: 2023/11/17 23:56:05
 * @Description:
 */
public class RobotHandlerTwo extends AbstractRobotHandler {
    // 测试处理器的2种情况
    public static String state = "2";

    @Override
    protected Object doHandler(RobotRequest request, Robot robot) {
        // 情况1 一般情况下 业务处理只要需要重写doHandler()方法
        if (state.equals("1")) {
            System.out.println("情况1 经过第二条处理链条");
            return null;
        } else {
            // 情况2
            // 前置先进行处理 xxxxxx
            System.out.println("情况2 经过第二条处理链条 前置处理 xxx");
            Object handle = next.handle(request, robot);
            // 后置获取结果后再进行处理
            KnClientResponse knClientResponse = getKnClientResponse(handle);
            if (knClientResponse == null) {
                return null;
            }
            // 获取结果 不为空 再次加工
            System.out.println("情况2 经过第二条处理链条 后置处理 再次加工结果 xxx ");

            return knClientResponse;
        }


    }

    @Override
    public Object handle(RobotRequest request, Robot robot) {
        if (state.equals("1")) {
            // 情况1
            return super.handle(request, robot);
        } else {
            // 情况2
            // 如果第二条处理需要还需要再次处理放回结果 重写handle() 自定义处理涮许
            return doHandler(request, robot);
        }
    }

    /**
     * 重写该处理器支持
     *
     * @param request
     * @param robot
     * @return
     */
    @Override
    protected boolean support(RobotRequest request, Robot robot) {
        return super.support(request, robot);
    }
}
